8.1 命令组合基础

6 分钟阅读

在前面的章节中,我们已经学习了 CLI 命令、CLI 标志和斜杠命令的单独使用。在本章中,我们将学习如何将这些命令和标志组合起来,创建更强大、更高效的自动化工作流。

命令组合的概念#

命令组合是指将多个命令、标志和参数按照一定的逻辑组合在一起,以实现复杂的功能。通过命令组合,您可以:

  • 串联多个操作:将多个独立的命令串联起来执行
  • 传递数据:使用管道将一个命令的输出传递给另一个命令
  • 条件执行:根据前一个命令的结果决定是否执行后续命令
  • 并行处理:同时执行多个独立的命令以提高效率

基本组合模式#

1. 标志组合#

最简单的组合方式是同时使用多个标志来配置 Claude Code 的行为。

示例:使用多个标志

bash
# 使用多个标志配置会话 claude --model sonnet --verbose --add-dir ./src --add-dir ./tests

这个命令组合了四个标志:

  • --model sonnet:指定使用 Sonnet 模型
  • --verbose:启用详细日志记录
  • --add-dir ./src:添加 src 目录
  • --add-dir ./tests:添加 tests 目录

标志组合的原则

  • 顺序无关:大多数标志的顺序不影响功能
  • 优先级:后指定的标志可能覆盖前面的标志
  • 兼容性:某些标志可能互斥,不能同时使用

2. 管道组合#

使用管道(|)将一个命令的输出传递给另一个命令。

示例:处理文件内容

bash
# 读取文件并通过管道传递给 Claude Code cat main.py | claude -p "优化这段代码的性能"

这个命令的工作流程:

  1. cat main.py:读取 main.py 文件的内容
  2. |:将文件内容通过管道传递
  3. claude -p "优化这段代码的性能":接收文件内容并执行优化任务

示例:链式处理

bash
# 多个命令的链式处理 cat code.py | claude -p "提取函数定义" | grep "def " | sort

这个命令的工作流程:

  1. cat code.py:读取 code.py 文件
  2. claude -p "提取函数定义":提取所有函数定义
  3. grep "def ":过滤出包含 "def " 的行
  4. sort:对结果进行排序

管道组合的注意事项

  • 数据格式:确保管道传递的数据格式正确
  • 错误处理:管道中的任何命令失败都会导致整个链失败
  • 性能考虑:长管道链可能影响性能

3. 命令替换#

使用命令替换将一个命令的输出作为另一个命令的参数。

示例:使用命令替换

bash
# 将命令输出作为参数 claude -p "审查 $(git diff --name-only) 中的文件"

这个命令的工作流程:

  1. git diff --name-only:获取修改的文件列表
  2. $():将输出作为参数传递
  3. claude -p "审查 ... 中的文件":审查这些文件

示例:动态参数

bash
# 根据当前分支动态生成参数 claude -p "为 $(git branch --show-current) 分支生成提交信息"

4. 条件执行#

根据前一个命令的执行结果决定是否执行后续命令。

示例:使用 && 操作符

bash
# 前一个命令成功后才执行后一个命令 claude -p "生成测试代码" && claude -p "运行测试"

这个命令的工作流程:

  1. 执行 claude -p "生成测试代码"
  2. 如果成功,执行 claude -p "运行测试"
  3. 如果失败,不执行后续命令

示例:使用 || 操作符

bash
# 前一个命令失败时才执行后一个命令 claude -p "尝试快速修复" || claude -p "使用备用方案"

这个命令的工作流程:

  1. 执行 claude -p "尝试快速修复"
  2. 如果失败,执行 claude -p "使用备用方案"
  3. 如果成功,不执行后续命令

示例:使用 ; 操作符

bash
# 无论前一个命令是否成功都执行后一个命令 claude -p "生成代码" ; claude -p "生成文档"

5. 后台执行#

将命令放在后台执行,不阻塞当前终端。

示例:后台执行

bash
# 在后台执行长时间运行的任务 claude -p "分析大型项目" &

这个命令的工作流程:

  1. &:将命令放在后台执行
  2. 命令在后台运行,终端可以继续使用

示例:并行执行多个任务

bash
# 并行执行多个独立的任务 claude -p "分析前端代码" & claude -p "分析后端代码" & claude -p "分析测试代码" & wait

这个命令的工作流程:

  1. 同时启动三个独立的任务
  2. 每个任务在后台运行
  3. wait:等待所有后台任务完成

高级组合模式#

1. 函数封装#

将命令组合封装成函数,便于重复使用。

示例:Bash 函数

bash
# 定义一个代码审查函数 code_review() { local file=$1 claude -p "审查 $file 的代码质量、安全性和性能" --output-format json } # 使用函数 code_review main.py code_review utils.js

示例:带参数的函数

bash
# 定义一个带多个参数的函数 analyze_project() { local project_dir=$1 local model=$2 local output_format=$3 claude --model "$model" \ --add-dir "$project_dir" \ -p "分析项目结构和代码质量" \ --output-format "$output_format" } # 使用函数 analyze_project ./myproject sonnet json

2. 循环处理#

使用循环批量处理多个文件或项目。

示例:for 循环

bash
# 批量处理多个文件 for file in *.py; do claude -p "优化 $file 的性能" > "${file%.py}.optimized.py" done

这个命令的工作流程:

  1. 遍历所有 .py 文件
  2. 对每个文件执行优化任务
  3. 将结果保存到 .optimized.py 文件

示例:while 循环

bash
# 持续监控文件变化 while inotifywait -e modify *.py; do claude -p "检测到文件变化,重新分析代码" done

3. 数组处理#

使用数组存储和处理多个项目。

示例:数组遍历

bash
# 定义项目数组 projects=("frontend" "backend" "api" "tests") # 遍历数组并处理每个项目 for project in "${projects[@]}"; do claude --add-dir "./$project" -p "分析 $project 项目" done

示例:动态数组

bash
# 动态生成数组 files=($(git diff --name-only)) # 处理数组中的每个文件 for file in "${files[@]}"; do claude -p "审查 $file 的变更" done

命令组合的最佳实践#

1. 可读性#

  • 使用注释:为复杂的命令组合添加注释
  • 合理换行:长命令使用反斜杠换行
  • 命名变量:使用有意义的变量名

示例:提高可读性

bash
# 定义变量 PROJECT_DIR="./myproject" MODEL="sonnet" OUTPUT_FORMAT="json" # 使用变量和注释 claude \ --model "$MODEL" \ --add-dir "$PROJECT_DIR" \ --add-dir "$PROJECT_DIR/tests" \ --add-dir "$PROJECT_DIR/docs" \ -p "分析项目结构和代码质量" \ --output-format "$OUTPUT_FORMAT"

2. 错误处理#

  • 检查退出码:检查命令是否成功执行
  • 捕获错误:使用 trap 捕获错误
  • 提供反馈:为用户提供清晰的错误信息

示例:错误处理

bash
# 检查命令是否成功 if claude -p "生成代码"; then echo "代码生成成功" else echo "代码生成失败" exit 1 fi # 使用 trap 捕获错误 trap 'echo "发生错误,退出码: $?"' ERR claude -p "执行任务1" claude -p "执行任务2" claude -p "执行任务3"

3. 性能优化#

  • 并行执行:使用后台执行和 wait 提高效率
  • 缓存结果:避免重复执行相同的命令
  • 增量处理:只处理变化的部分

示例:性能优化

bash
# 并行处理多个文件 for file in *.py; do claude -p "分析 $file" > "${file%.py}.analysis.json" & done wait # 使用缓存 CACHE_FILE="analysis.cache" if [ -f "$CACHE_FILE" ]; then echo "使用缓存结果" cat "$CACHE_FILE" else claude -p "分析项目" > "$CACHE_FILE" fi

4. 可维护性#

  • 模块化:将复杂的命令组合拆分成多个函数
  • 配置化:使用配置文件管理参数
  • 文档化:为命令组合编写文档

示例:模块化

bash
# 定义模块化函数 setup_environment() { claude --add-dir ./src --add-dir ./tests --add-dir ./config } generate_code() { claude -p "生成代码" } run_tests() { claude -p "运行测试" } # 组合函数 main() { setup_environment generate_code run_tests } # 执行主函数 main

常见组合场景#

1. 代码审查工作流#

bash
# 完整的代码审查工作流 claude -p "审查最近的代码变更" \ --output-format json \ > review.json && \ claude -p "根据审查结果生成修复建议" \ --input-format json \ < review.json

2. 文档生成工作流#

bash
# 自动生成文档 claude -p "提取所有函数和类的文档注释" \ --output-format json \ > docs.json && \ claude -p "根据提取的信息生成 Markdown 文档" \ --input-format json \ < docs.json > README.md

3. 测试工作流#

bash
# 自动化测试工作流 claude -p "生成测试用例" > test_cases.txt && \ claude -p "运行测试用例" && \ claude -p "分析测试结果" --output-format json > test_results.json

4. 部署工作流#

bash
# 自动化部署工作流 claude -p "检查代码质量" && \ claude -p "生成部署清单" && \ claude -p "执行部署脚本" && \ claude -p "验证部署结果"

总结#

命令组合是发挥 Claude Code 强大功能的关键。通过掌握基本的组合模式(标志组合、管道组合、命令替换、条件执行、后台执行)和高级组合模式(函数封装、循环处理、数组处理),您可以创建强大、高效的自动化工作流。

记住以下要点:

  1. 从简单开始:先掌握基本的组合模式
  2. 逐步复杂:在掌握基础后尝试高级模式
  3. 注重实践:通过实际项目练习命令组合
  4. 持续优化:不断改进和优化您的命令组合

在接下来的章节中,我们将学习如何将这些命令组合应用到脚本编写、CI/CD 集成、批处理操作和实际工作流中。

标记本节教程为已读

记录您的学习进度,方便后续查看。